Kubernetes 1.31 salió el 13 de agosto de 2024. Release calmada — sin features revolucionarias pero con varias estabilizaciones importantes: AppArmor GA, sidecar containers stable, Dynamic Resource Allocation (DRA) beta. Este artículo cubre qué vale la pena upgradear.
Features estables nuevas (GA)
AppArmor support
AppArmor profile via pod spec nativo:
apiVersion: v1
kind: Pod
spec:
securityContext:
appArmorProfile:
type: Localhost
localhostProfile: custom-profile
Antes era via annotations (legacy). Ahora API field. Mejora compliance workflows.
Sidecar containers
initContainers con restartPolicy: Always son sidecars de verdad:
spec:
initContainers:
- name: proxy
image: envoy:1.30
restartPolicy: Always # — lo hace sidecar real
Se ejecutan antes del main container, restart if fail, terminate cuando main termina. Soluciona problemas clásicos de service mesh sidecars.
Kube-proxy mejoras
- nftables mode más estable (beta).
- Performance mejorado en servicios masivos.
Para clusters grandes con muchos services, migración eventual a nftables kube-proxy es path.
Features beta nuevas
Dynamic Resource Allocation (DRA)
Alternativa moderna a device plugins para GPUs, FPGAs, etc:
spec:
resourceClaims:
- name: gpu
resourceClaimName: my-gpu-claim
Permite sharing de recursos especializados de forma más flexible. Para AI workloads multi-tenant, crítico.
Memory manager
Static memory manager permite NUMA-aware scheduling.
Contextual logging
Logs estructurados con contexto automático — rastreo más fácil.
Removed / Deprecated
- cephfs in-tree driver removed (usar CSI driver).
- cephrbd in-tree driver removed.
- gce_pd in-tree deprecated.
Si usas Ceph o GCE PD in-tree: migrar CSI antes de upgrade.
Seguridad
Mejoras:
- ValidatingAdmissionPolicy GA (desde 1.30).
- Podman Pod Security Admission refinements.
- ReadOnly filesystem features stabilising.
Cluster admins tienen más tools nativos para security.
Scheduler improvements
- Fewer pods pending en clusters grandes.
- Better preemption decisions.
- Priority-and-fairness throughput improvements.
Para clusters con miles de pods, performance notable.
Upgrade path
Desde 1.29 o 1.30:
# Check deprecation warnings
kubectl get events -A | grep -i deprecat
# Upgrade control plane
kubeadm upgrade plan 1.31.0
kubeadm upgrade apply v1.31.0
# Upgrade kubelet node by node
# ... (rolling)
Patterns habituales. Nada disruptivo salvo removed drivers.
Component changes
- Kubelet: TLS bootstrap simplifications.
- containerd 2.0 compatibility verified.
- CRI-O 1.31 compatible.
- etcd 3.5 still default.
Para kernel: 5.10+ recomendado para eBPF features modernas.
Performance
Benchmarks preliminares:
- Scheduler: 5-10% throughput improvement.
- API server: similar.
- Storage: CSI improvements en specific drivers.
Cambios incrementales pero acumulativos.
Ecosystem adaptation
- EKS: 1.31 available a few months tras upstream.
- GKE: similar pace.
- AKS: similar.
- kops, kubeadm: día 1.
- Rancher, Anthos: versions later.
Self-managed siempre adelantado.
Para administradores
Checklist upgrade:
Sidecar real: el gamechanger
El restartPolicy: Always en initContainer es más importante de lo que parece:
Before: service mesh sidecars “hacks” con shareProcessNamespace, workarounds para shutdown order.
Now: sidecars oficialmente supported con lifecycle correcto. Inicia antes del main, termina después, restart independiente si falla.
Istio, Linkerd, y CrowdSec beneficiation directly.
Ecosistema que ya usa esto
- Istio: soporte nativo sidecar native lifecycle en 1.23+.
- Linkerd: adoptando.
- Vector logs collector: sidecar pattern mejorado.
- OpenTelemetry collector: similar.
Effect: cleaner pod restarts, menos issues shutdown order.
Roadmap 1.32+
Expectativas:
- DRA stabilization: Q4 2024 / Q1 2025.
- Seccomp profile defaulting improvements.
- Control plane HA refinements.
- KEP 3635: Pod-level resources.
Conclusión
K8s 1.31 es release iterativa sin drama. Features GA (AppArmor, sidecar containers) son improvements significativos en áreas donde K8s tenía gaps. DRA beta es dirección importante para AI workloads. Para clusters productivos, upgrade es seguro siguiendo checklist estándar. Para orgs en 1.28 o antes, acelerar upgrades — cada versión se aleja más y el gap hace migration más costosa.
Síguenos en jacar.es para más sobre Kubernetes, containers y cloud-native.